Method for accessing system memory and associated processing circuit within a network card

ABSTRACT

The present invention provides a method for accessing a system memory, wherein the method includes the steps of: reading a descriptor from the system memory, where the descriptor includes a buffer start address field and a buffer size field, wherein the buffer start address field includes a start address of a buffer in the system memory, and the buffer size field indicates a size of the buffer; receiving multiple packets, and writing the multiple packets in to the buffer; modifying the descriptor according to the multiple packets stored in the buffer to generate a modified descriptor, wherein the modified descriptor only comprises information of part of the multiple packets or does not comprise information of any one of the multiple packets; and writing the modified descriptor into the system memory.

BACKGROUND OF THE INVENTION 1. Field of the Invention

The present invention relates a method for accessing a system memory.

2. Description of the Prior Art

When an electronic device receives a packet from an external device, thepacket and related parsing information are temporarily stored in asystem memory for subsequent processing. In the storage of the parsinginformation, the following two methods can be used. The first method isto configure a complete and continuous memory space in the systemmemory, and use the parsing information of each packet as a header ofthe packet to store in this memory space. However, since each packetmust be continuously stored in this memory space, and a number ofpackets to be processed are increased due to the rapid increase of thenetwork connection speed, therefore, it is very difficult to find acomplete and continuous memory space with a large capacity in the systemmemory. In order to solve the problem of the first method, the secondmethod is to use multiple descriptor to describe multiple packetsrespectively, and each packet can be stored in a different address inthe system memory, and the processor can know the address of the packetin the system memory through an index of the corresponding descriptor.Although the second method does not need to configure a complete andcontinuous memory space in the system memory, however, if a large numberof small packets are received, a number of times of reading and writingof the descriptor will be too frequent, thereby causing waste ofbandwidth and lack of bandwidth, and cannot transmit the packetsefficiently.

SUMMARY OF THE INVENTION

It is therefore an objective of the present invention to provide amethod for accessing a system memory, which can effectively reduce thenumber of times of reading and writing the descriptors withoutconfiguring a complete and continuous memory space in the system memory,to solve the problems described in the prior art.

According to one embodiment of the present invention, a method foraccessing a system memory comprises the steps of: reading a descriptorfrom the system memory, where the descriptor comprises a buffer startaddress field and a buffer size field, wherein the buffer start addressfield comprises a start address of a buffer in the system memory, andthe buffer size field indicates a size of the buffer; receiving multiplepackets, and writing the multiple packets in to the buffer; modifyingthe descriptor according to the multiple packets stored in the buffer togenerate a modified descriptor, wherein the modified descriptor onlycomprises information of part of the multiple packets or does notcomprise information of any one of the multiple packets; and writing themodified descriptor into the system memory.

According to one embodiment of the present invention, a processingcircuit within a network card is configured to perform the steps of:reading a descriptor from a system memory external to the network card,where the descriptor comprises a buffer start address field and a buffersize field, wherein the buffer start address field comprises a startaddress of a buffer in the system memory, and the buffer size fieldindicates a size of the buffer; receiving multiple packets, and writingthe multiple packets in to the buffer; modifying the descriptoraccording to the multiple packets stored in the buffer to generate amodified descriptor, wherein the modified descriptor only comprisesinformation of part of the multiple packets or does not compriseinformation of any one of the multiple packets; and writing the modifieddescriptor into the system memory.

These and other objectives of the present invention will no doubt becomeobvious to those of ordinary skill in the art after reading thefollowing detailed description of the preferred embodiment that isillustrated in the various figures and drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating an electronic device according to oneembodiment of the present invention.

FIG. 2 shows descriptors prepared by a central processing unit andmodified descriptors generated by a processing circuit according to oneembodiment of the present invention.

FIG. 3 shows a modified descriptor and corresponding buffer according toone embodiment of the present invention.

FIG. 4 shows a modified descriptor and corresponding buffer according toanother embodiment of the present invention.

FIG. 5 is a flowchart of a method for accessing a system memoryaccording to one embodiment of the present invention.

DETAILED DESCRIPTION

FIG. 1 is a diagram illustrating an electronic device 100 according toone embodiment of the present invention. As shown in FIG. 1 , theelectronic device 100 comprises a network card 110, a system memory 120,a central processing unit (CPU) 130 and a storage unit 140, wherein thenetwork card 110 comprises a processing circuit 112 and a networkconnector 114, and the network connector 114 is used to connect anetwork cable (e.g., Ethernet cable) 102. The system memory 120 can beimplemented by using static random access memory (SRAM) or dynamicrandom access memory (DRAM), and the system memory 120 comprisesmultiple regions, wherein one region is used to store multipledescriptors 122_1-122_N, and the descriptors 122_1-122_N are used topoint to multiple buffers 124_1-124_N, respectively. The storage unit140 comprises at least one driver 142, wherein the driver 142 is used toperform operations related to the network card 110. In this embodiment,the electronic device 100 can be any electronic device that needs to usea network function, such as a desktop computer, a notebook, etc., andthe network card 110 can be built in or externally connected to theelectronic device 100.

In this embodiment, each of the descriptors 122_1-122_N has a fixed sizesuch as 16 bytes or 32 bytes. In one embodiment, not a limitation of thepresent invention, the descriptors 122_1-122_N are located at fixedaddresses in the system memory 120, and the descriptors 122_1-122_N areconsecutive in the memory addresses. In another embodiment, thedescriptors 122_1-122_N do not necessarily have fixed addresses in thesystem memory 120, and the descriptors 122_1-122_N do not necessarilyhave to be consecutive in the memory addresses, as long as thedescriptor can point out a memory address of a next descriptor, forexample, the descriptor 122_1 contains information pointing to astarting memory address of descriptor 122_2. In addition, the addressesof the plurality of buffers 124_1-124_N in the system memory 120 may notbe fixed, and the buffers 124_1-124_N may be discontinuous in memoryaddresses.

In the operation of the electronic device 100, the CPU 130 reads thedriver 142 from the storage unit 140, and executes the driver 142 tostart operations related to the network card 110, that is, to receivepackets from the network card 110 through the network cable 102, ortransmit data to other electronic devices through the network card 110.In addition, the system memory 120 is used to temporarily store packetsfrom the external devices, data that need to be transmitted to otherelectronic devices through the network card 110, or other system data.Since the key point of the present invention is to provide a method forstoring packets and related information, the following embodiments onlydescribe the content of the electronic device 100 receiving packets fromthe external device and storing the packets in the system memory 120.

First, the CPU 130 prepares the contents of the descriptors 122_1-122_Nin the system memory 120, wherein the descriptors 122_1-122_N are usedto describe the information of the corresponding buffers 124_1-124_Nrespectively. For example, referring to the diagram of descriptor 122_1shown in FIG. 2 , the descriptor 122_1 includes at least three fields,which are an own bit field, a buffer start address field, and a buffersize field. The own bit field is used to indicate whether the descriptor122_1 is currently available to the network card 110, for example, theCPU 130 sets the own bit to “0” to indicate that the network card 110can use descriptor 122_1 and the corresponding buffer 124_1. The bufferstart address field is used to indicate a start address of the buffer124_1 in the system memory 120, and the buffer size field is used toindicate the size of the buffer 124_1. Similarly, each of the otherdescriptors 122_2-122_N may also have the same architecture, forexample, the descriptor 122_2 includes the own bit, the start addressand the size of the corresponding buffer 124_2, and so on.

In one embodiment, the buffers 124_1-124_N do not have fixed addresses.For example, when the CPU 130 prepares the content of the descriptor122_1 next time, the buffers 124_1 may have different addresses, and thestart address of the buffer recorded in the descriptor 122_1 will alsobe different. In one embodiment, the size of each buffer 124_1-124_N isgreater than or equal to maximum data amount of one Ethernet packet,such as 1.5 kilobytes (KB), but it's not a limitation of the presentinvention. In another embodiment, the size of each of the buffers124_1-124_N may be smaller than the maximum data amount of one Ethernetpacket.

Then, when the processing circuit 112 of the network card 110 receivesone or more packets from the external device, the processing circuit 112reads at least part of the descriptors 122_1-122_N in sequence todetermine which descriptor can be used by the processing circuit 112.For example, the processing circuit 112 sequentially reads the own bitsof at least part of the descriptors 122_1-122_N, and selects thedescriptor whose own bit is “0” to perform subsequent operations. Forthe convenience of description, the following embodiments are describedwith the processing circuit 112 selecting the descriptor 122_1.

After reading the descriptor 122_1, the processing circuit 112determines how many currently received packets can be stored in thebuffer 124_1 according to the buffer size of the buffer 124_1 recordedin the descriptor 122_1. Taking FIG. 3 as an example, assuming thatpacket #0-packet #2 are currently received, and the total data amount ofpacket #0-packet #2 with the related header #0-header #2 is less thanthe size of the buffer 124_1, the processing circuit 112 can create acorresponding header according to each packet to record the informationof the packet, and write the headers together with the packets into thebuffer 124_1 in sequence. Specifically, the processing circuit 112 maycreate a header #0 of the packet #0, wherein the header #0 records thesize of the packet #0 and related information, such as an error checkcode (e.g., checksum), and the processing circuit 112 writes the header#0 and the packet #0 to the buffer 124_1 sequentially and continuously.Then, the processing circuit 112 may create a header #1 of the packet#1, wherein the header #1 records the size of the packet #1 and relatedinformation; and the processing circuit 112 writes the header #1 and thepacket #1 to the buffer 124_1 sequentially and continuously, wherein theheader #1 is immediately after the packet #0. Then, the processingcircuit 112 may create a header #2 of the packet #2, wherein the header#2 records the size of the packet #2 and related information; and theprocessing circuit 112 writes the header #2 and the packet #2 to thebuffer 124_1 sequentially and continuously, wherein the header #2 isimmediately after the packet #1.

In this embodiment, since the size of the next packet received by theprocessing circuit 112 is larger than the remaining space of the buffer124_1, the processing circuit 112 will not continue to store the nextpacket in the buffer 124_1, and the remaining space of the buffer 124_1can be blank without storing any data, or storing invalid data (dummydata).

After the packets #0-#2 are written into the buffer 124_1, theprocessing circuit 112 modifies the content of the descriptor 122_1, sothat the modified descriptor 112_1_A includes at least four fields,which are own bit field, first packet information field, multi-packettag field, and total data amount/total packet number field. In thisembodiment, the own bit may have a bit “1” to indicate that thecorresponding buffer 124_1 has stored the packet, and may also be usedto inform the CPU 130 that it can read the packet from the buffer 124_1.The first packet information field may contain the start address of theheader #0 of the packet #0, that is the start address of the buffer124_1. The multi-packet tag field is used to indicate whether the buffer124_1 stores multiple packets. For example, the multi-packet tag can berepresented by a single bit, wherein the bit “1” indicates that thebuffer 124_1 currently stores two or more packets, and the bit “0”indicates that the buffer 124_1 currently only stores one packet. Thetotal data amount/total packet number field records the data amount ofall the data currently stored in the buffer 124_1, or the number ofstored packets in the buffer 124_1. For example, the buffer 124_1 shownin FIG. 3 stores three packets.

After the processing circuit 112 modifies the descriptor 122_1, theprocessing circuit 112 stores a modified descriptor 112_1_A back to theoriginal address of the descriptor 122_1 in the system memory 120, thatis, the processing circuit 112 uses the modified descriptor 112_1_A tooverwrite the descriptor 122_1.

Then, the CPU 130 reads and analyzes the own bits in the descriptors122_1-122_N, and reads the descriptor (s) whose own bits is/are “1”. Inthis embodiment, the CPU 130 reads the modified descriptor 112_1_A, andsequentially reads the header #0, the packet #0, the header #1, thepacket #1, the header #2 and the packet #2 in the buffer 124_1 accordingto the information in the modified descriptor 112_1_A, for subsequentprocessing. In this embodiment, since the modified descriptor 112_1_Aprovides the multi-packet tag field and the total data amount/totalpacket number field, the CPU 130 can accurately know how much data orhow many packets need to be read from the buffer 124_1.

After the CPU 130 successfully reads the data in the buffer 124_1, theCPU 130 may re-modify the modified descriptor 112_1_A to the descriptor112_1. For example, the CPU 130 uses the original descriptor 112_1 tooverwrite the modified descriptor 112_1_A, for use by the processingcircuit 112 of the network card 110 to store subsequent packets.

In the above embodiment, since the buffer pointed to by a singledescriptor can store multiple packets, the CPU 130 does not need toprepare too many descriptors 122_1-122_N in the system memory 120 foruse when receiving a large number of small packets. Therefore, the spacededicated to storing the descriptors 122_1-122_N in the system memory120 can also be greatly reduced. In addition, although a buffer isallowed to store multiple packets, since the related information of thepackets (i.e., headers) are also stored in the buffer, the descriptordoes not need to describe the content of each packet in the buffer.Therefore, the size of the descriptor can be effectively reduced toavoid occupying too much space in the system memory 120.

In the embodiments shown in FIG. 2 and FIG. 3 , the buffer 124_1 storesthe header #0, the packet #0, the header #1, the packet #1, the header#2 and the packet #2 in sequence, and the first packet information inthe modified descriptor 112_1_A indicates the start address of theheader #0. In other embodiments, as shown in FIG. 4 , the first packetinformation field in the modified descriptor 112_1_A may directlycontain the related information of the packet #0, such as the size ofpacket #0 and the error check code, and the buffer 124_1 itself does notneed to store the related information of the packet #0, that is, thebuffer 124_1 stores the packet #0, the header #1, the packet #1, theheader #2 and the packet #2 in sequence. This alternative design shallfall within the scope of the present invention.

FIG. 5 is a flowchart of a method for accessing a system memoryaccording to one embodiment of the present invention. Referring to theabove embodiments to together, the flow of FIG. 5 is described asfollows.

Step 500: the flow starts.

Step 502: CPU configures multiple descriptors and corresponding multiplebuffers in a system memory.

Step 504: a processing circuit of a network card reads one of themultiple descriptors.

Step 506: the processing circuit stores one or more packets and theirheaders in the buffer corresponding to the descriptor.

Step 508: the processing circuit modifies the descriptor according tothe one or more packets stored in the buffer to generate a modifieddescriptor.

Step 510: the processing circuit writes the modified descriptor into thesystem memory.

Those skilled in the art will readily observe that numerousmodifications and alterations of the device and method may be made whileretaining the teachings of the invention. Accordingly, the abovedisclosure should be construed as limited only by the metes and boundsof the appended claims.

What is claimed is:
 1. A method for accessing a system memory,comprising: reading a descriptor from the system memory, where thedescriptor comprises a buffer start address field and a buffer sizefield, wherein the buffer start address field comprises a start addressof a buffer in the system memory, and the buffer size field indicates asize of the buffer; receiving multiple packets, and writing the multiplepackets in to the buffer; modifying the descriptor according to themultiple packets stored in the buffer to generate a modified descriptor,wherein the modified descriptor only comprises information of part ofthe multiple packets or does not comprise information of any one of themultiple packets; and writing the modified descriptor into the systemmemory.
 2. The method of claim 1, wherein the step of receiving themultiple packets, and writing the multiple packets in to the buffercomprises: generating headers of the multiple packets, respectively,wherein the header of each packet comprises the information of thepacket; and writing the multiple packets with the corresponding headersinto the buffer in sequence.
 3. The method of claim 2, wherein the stepof modifying the descriptor according to the multiple packets stored inthe buffer to generate the modified descriptor comprises: modifying thedescriptor to add a first packet information field and a total dataamount/total packet number field to generate the modified descriptoraccording to the multiple packets written into the buffer, wherein thefirst packet information field comprises the start address of the bufferin the system memory or an address of the header of a first packet ofthe plurality of packets; and the total data amount/total packet numberfield records total amount of data stored in the buffer or a number ofthe multiple packets.
 4. The method of claim 3, wherein the modifieddescriptor further comprises a multi-packet tag field, wherein themulti-packet tag field records whether the buffer stores multiplepackets or only one packet.
 5. The method of claim 2, wherein theinformation of the packet comprises a size of the packet.
 6. The methodof claim 1, wherein the multiple packets comprise a first packet and atleast one second packet; and the step of receiving the multiple packets,and writing the multiple packets in to the buffer comprises: generatinga header of each of the at least one second packet, wherein the headerof each second packet comprises information of the second packet; andwriting the first packet and the at least one second packet with thecorresponding header into the buffer.
 7. The method of claim 6, whereinthe step of modifying the descriptor according to the multiple packetsstored in the buffer to generate the modified descriptor comprises:modifying the descriptor to add a first packet information field and atotal data amount/total packet number field to generate the modifieddescriptor according to the multiple packets written into the buffer,wherein the first packet information field comprises information of thepacket and an address of the first packet in the system memory; and thetotal data amount/total packet number field records total amount of datastored in the buffer or a number of the multiple packets.
 8. The methodof claim 7, wherein the information of the first packet comprises a sizeof the first packet, and the information of the second packet comprisesa size of the second packet.
 9. The method of claim 7, wherein themodified descriptor further comprises a multi-packet tag field, whereinthe multi-packet tag field records whether the buffer stores multiplepackets or only one packet.
 10. A system comprising of: a processingcircuit within a network card, configured to perform the steps of:reading a descriptor from a system memory external to the network card,where the descriptor comprises a buffer start address field and a buffersize field, wherein the buffer start address field comprises a startaddress of a buffer in the system memory, and the buffer size fieldindicates a size of the buffer; receiving multiple packets, and writingthe multiple packets in to the buffer; modifying the descriptoraccording to the multiple packets stored in the buffer to generate amodified descriptor, wherein the modified descriptor only comprisesinformation of part of the multiple packets or does not compriseinformation of any one of the multiple packets; and writing the modifieddescriptor into the system memory.
 11. The system of claim 10, whereinthe step of receiving the multiple packets, and writing the multiplepackets in to the buffer comprises: generating headers of the multiplepackets, respectively, wherein the header of each packet comprises theinformation of the packet; and writing the multiple packets with thecorresponding headers into the buffer in sequence.
 12. The system ofclaim 11, wherein the step of modifying the descriptor according to themultiple packets stored in the buffer to generate the modifieddescriptor comprises: modifying the descriptor to add a first packetinformation field and a total data amount/total packet number field togenerate the modified descriptor according to the multiple packetswritten into the buffer, wherein the first packet information fieldcomprises the start address of the buffer in the system memory or anaddress of the header of a first packet of the plurality of packets; andthe total data amount/total packet number field records total amount ofdata stored in the buffer or a number of the multiple packets.
 13. Thesystem of claim 12, wherein the modified descriptor further comprises amulti-packet tag field, wherein the multi-packet tag field recordswhether the buffer stores multiple packets or only one packet.
 14. Thesystem of claim 11, wherein the information of the packet comprises asize of the packet.
 15. The system of claim 10, wherein the multiplepackets comprise a first packet and at least one second packet; and thestep of receiving the multiple packets, and writing the multiple packetsin to the buffer comprises: generating a header of each of the at leastone second packet, wherein the header of each second packet comprisesinformation of the second packet; and writing the first packet and theat least one second packet with the corresponding header into thebuffer.
 16. The system of claim 15, wherein the step of modifying thedescriptor according to the multiple packets stored in the buffer togenerate the modified descriptor comprises: modifying the descriptor toadd a first packet information field and a total data amount/totalpacket number field to generate the modified descriptor according to themultiple packets written into the buffer, wherein the first packetinformation field comprises information of the packet and an address ofthe first packet in the system memory; and the total data amount/totalpacket number field records total amount of data stored in the buffer ora number of the multiple packets.
 17. The system of claim 16, whereinthe information of the first packet comprises a size of the firstpacket, and the information of the second packet comprises a size of thesecond packet.
 18. The system of claim 16, wherein the modifieddescriptor further comprises a multi-packet tag field, wherein themulti-packet tag field records whether the buffer stores multiplepackets or only one packet.